//
//  JZAdSDKRewardVideoAd.h
//  JZAdSDK
//
//  Created by 陈坤 on 2025/9/28.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@protocol JZAdSDKRewardVideoAdDelegate;

@interface JZAdSDKRewardVideoAd : NSObject

/**
 广告是否静音播放，默认非静音播放
*/
@property (nonatomic) BOOL videoMuted;

/**
 广告生命周期代理
*/
@property (nonatomic, weak) id <JZAdSDKRewardVideoAdDelegate> delegate;

/*
 设置根控制器，用于落地页弹出
 */
@property (nonatomic, weak) UIViewController *controller;

/**
 广告位id
*/
@property (nonatomic, copy) NSString *posId;

/**
 *  广告是否有效，以下情况会返回NO，建议在展示广告之前判断，否则会影响计费或展示失败
 *  a.广告未拉取成功
 *  b.广告已经曝光过
 *  c.广告过期
 *
 */
- (BOOL)isAdValid;

/**
 加载广告方法
 */
- (void)loadRewardVideoAd;
/**
 展示广告方法

 @param rootViewController 用于 present 激励视频 VC
 */
- (void)showRewardVideoAdFromRootViewController:(UIViewController *)rootViewController;

/**
 设置激励视频场景id
 */
- (void)setAdScenes:(NSDictionary *)scenes;

/**
 获取广告的竞价价格，单位分，为0则表示未成功获取到广告，或者不支持竞价，开启该功能需要联系媒介商务
 */
- (NSInteger)getBidPrice;
/**
 发送竞价成功上报
 @param price 赢价价格，单位分
 */
- (void)sendWinNotice:(NSInteger)price;

/**
 发送竞价失败上报
 @param price 赢价价格，单位分
 */
- (void)sendLossNotice:(NSInteger)price;

@end

@protocol JZAdSDKRewardVideoAdDelegate <NSObject>

@optional


/**
 广告数据加载成功回调

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidLoad:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频播放页即将展示回调

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdWillVisible:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频广告曝光回调

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidExposed:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频广告曝光上报回调（只会回调一次）

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidExposeReport:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频播放页关闭回调

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidClose:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频广告信息点击回调（可能回调多次）

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidClicked:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频广告信息点击上报回调（只会回调一次）

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidClickReport:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频广告各种错误信息回调

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 @param error 具体错误信息
 */
- (void)JZ_rewardVideoAd:(JZAdSDKRewardVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error;


/**
 视频广告播放达到激励条件回调

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidRewardEffective:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

/**
 视频广告视频播放完成

 @param rewardedVideoAd JZAdSDKRewardVideoAd 实例
 */
- (void)JZ_rewardVideoAdDidPlayFinish:(JZAdSDKRewardVideoAd *)rewardedVideoAd;

@end

NS_ASSUME_NONNULL_END
